package cn.itcast.dao;

import cn.itcast.pojo.Menu;
import com.github.pagehelper.Page;
import io.lettuce.core.dynamic.annotation.Param;

import java.util.List;

/**
 * The interface Menu dao.
 */
public interface MenuDao {

    /**
     * 保存菜单基础数据
     *
     * @param menu the menu
     */
    void add(Menu menu);

    /**
     * 保存菜单和权限关联信息
     *
     * @param menuId       the menu id
     * @param permissionId the permission id
     */
    void setPermissionAssociation(@Param("menuId") Integer menuId, @Param("permissionId") Integer permissionId);

    /**
     * 根据条件查询菜单数据
     *
     * @return page
     */
    Page<Menu> findPage();

    /**
     * 根据条件查询子菜单数据
     *
     * @param parentMenuId the parent menu id
     * @return list
     */
    List<Menu> findChildren(Integer parentMenuId);

    /**
     * 根据id查询菜单信息
     *
     * @param id the id
     * @return menu
     */
    Menu findById(Integer id);

    /**
     * 查询指定菜单关联的权限id
     *
     * @param checkGroupId the check group id
     * @return integer [ ]
     */
    Integer[] findPermissionAssociationIds(Integer checkGroupId);

    /**
     * 更新菜单基础信息
     *
     * @param menu the menu
     */
    void update(Menu menu);

    /**
     * 删除菜单与权限关联信息
     *
     * @param id the id
     */
    void deletePermissionAssociation(Integer id);

    /**
     * 根据id删除指定菜单
     *
     * @param id the id
     */
    void deleteById(Integer id);

    /**
     * 根据用户名查询所在菜单
     *
     * @param username the username
     * @return menu
     */
    Menu findRoleByUserName(String username);


    /**
     * 查询用户菜单信息
     *
     * @param id the id
     * @return list
     */
    List<Menu> findUserMenus(Integer id);

    List<Integer> getIds(String username);

    Menu findMenus(Integer id);
}

